"""
pagamiago - free software script to send PayPal payments

Copyright (C) 2018 Alyssa Rosenzweig

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.
"""

import re
import sys


class ProgressBar:
    def __init__(self, label='', finalCount=0, startCount=0):
        self.label = label
        self.finalCount = finalCount
        self.currentCount = finalCount

    def update(self, debug=False):
        if not debug:
            return

        self.currentCount += 1

        sys.stdout.write("\r" +
                         self.label +
                         ": [" +
                         (self.currentCount *
                          "*") +
                         ((self.finalCount -
                           self.currentCount) *
                          ".") +
                         "]")

        if self.finalCount == self.currentCount:
            sys.stdout.write("\n")


def die(msg, guru=None):
    print("\n" + msg)

    if guru is not None:
        with open("/tmp/pagamigo-dump.html", "wb") as f:
            f.write(guru.encode("utf8"))

        print("Additional information has been dumped to /tmp/pagamigo-dump.html for offline guru meditation.")

    sys.exit(1)


def grep_json_string(html, field):
    try:
        return re.search('"' + field + '": *"(.*?)"', html).group(1)
    except AttributeError:
        raise AttributeError("Html data extraction failed for: " + field + ". This is a pagamigo bug")
